package net.hn.hnms.biz.process.service;

//import net.hn.hnms.biz.common.activiti.result.ProcessHistoryResult;
//import net.hn.hnms.biz.common.activiti.result.ProcessTaskResult;
import net.hn.hnms.biz.process.domain.WorkTicketFlowPo;
import net.hn.hnms.biz.process.domain.dto.ApproveDto;
import net.hn.hnms.biz.process.domain.dto.FromUpdateDto;
import net.hn.hnms.biz.process.domain.dto.WorkTicketFlowDataDto;
import net.hn.hnms.biz.process.domain.dto.WorkTicketFlowDto;
import net.hn.hnms.biz.process.domain.vo.ApproveVo;
import net.hn.hnms.sys.common.core.domain.ResponsePage;
import net.hn.hnms.sys.common.mybatis.core.page.PageQuery;
import net.hn.hnms.sys.system.api.model.UserVo;

import java.util.List;

public interface WorkTicketFlowService {
    /**
     * 功能描述: 工作票设置操作或设置审批流程
     * @auther: WangLong
     * @date: 2022/8/10 16:41
     * @param workTicketFlowPo
     * @return java.lang.Boolean
     */

    Boolean addApprove(WorkTicketFlowPo workTicketFlowPo);

    /**
     * 功能描述: 获取工作票审批列表
     * @auther: WangLong
     * @date: 2022/8/11 9:52
     * @param pageQuery
     * @return net.hn.hnms.sys.common.mybatis.core.page.TableDataInfo<net.hn.hnms.biz.process.domain.vo.WorkTicketFlowOneVo>
     */

    ResponsePage<List<ApproveVo>> approvePageList(PageQuery pageQuery, ApproveDto approveDto);

    /**
     * 功能描述: 发起审批流程
     * @auther: WangLong
     * @date: 2022/8/11 17:34
     * @param workTicketFlowDto
     * @return java.lang.Boolean
     */

    Boolean startApprove(WorkTicketFlowDto workTicketFlowDto);

    Boolean addApproveUpdate(WorkTicketFlowDto workTicketFlowDto);

    WorkTicketFlowDto approveById(String id);

//    /**
//     * 工作流查询当前任务列表
//     * @param businessKey
//     * @return
//     */
//    List<ProcessHistoryResult> taskByid(String businessKey);
//
//    /**
//     * v工作流--开启流程审批
//     * @param businessKey
//     * @param name
//     * @param user
//     * @return
//     */
//    ProcessTaskResult startProcess(String businessKey, String name, String user);
//
//    /**
//     * 完成任务
//     * @param businessKey
//     * @param approve
//     * @return
//     */
//    ProcessTaskResult executeProcessTask(String businessKey, Integer approve,String content,String user);

//    String base(String businessKey);

    /**
     * 获取我的审批列表
     * @return
     */
    List<ApproveVo> myApprove(String mineCode);

    /**
     * 完成审批
     * @return
     */
    Boolean accomplishApprove(String businessKey,Boolean is,String approve ,String content);

    /**
     * 根据工作票DataID获取审批序号列表
     * @param id
     * @return
     */
    WorkTicketFlowDataDto approveDataById(String id);

    /**
     * From表单修改
     * @param fromUpdateDto
     * @return
     */
    Boolean fromUpdate(FromUpdateDto fromUpdateDto);

    /**
     * 撤销审批
     * @param id
     * @return
     */
    Boolean revocationApproveById(String id);

    /**
     * 工作流--撤销审批
     * @param businessKey
     * @return
     */
//    void revocation(String businessKey);

    /**
     * 删除审批
     * @param businessKey
     */
//    void delete(String businessKey);

    /**
     * 暂停运行的流程实例
     * @param businessKey
     */
//    void suspend(String businessKey);

    /**
     * 激活暂停的流程实例
     * @param businessKey
     */
//    void activate(String businessKey);

    /**
     * 审批批量删除
     * @param idList
     * @return
     */
    Boolean approveDelete(List<String> idList);


    /**
     * 审批人员-新增审批人员
     * @param idList
     * @return
     */
    Boolean personAdd(List<Long> idList,String mineCode);

    /**
     * 审批人员-批量删除审批人员
     * @param idList
     * @return
     */
    Boolean personDelete(List<Long> idList,String mineCode);

    /**
     * 审批人员-已添加审批人员列表
     * @return
     */
    List<UserVo> personTrueApprovalList(String mineCode);

    /**
     *  审批人员-未添加审批人员列表
     * @return
     */
    List<UserVo> personFalseApprovalList(String mineCode);

    /**
     * 审批人员-根据用户id设置审批图片
     * @param userId
     * @param mineCode
     * @param url
     * @return
     */
    Boolean personSetSignaturePicture(Long userId, String mineCode, String url);

    /**
     * 审批人员-根据用户id获取审批图片url
     * @param userId
     * @param mineCode
     * @return
     */
    String getSignaturePicture(Long userId, String mineCode);
}
